﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasModelo.Entities;
using GestorDeFlotasDesktop.UILogic.Helpers;
using GestorDeFlotasDesktop.UILogic;
using GestorDeFlotasModelo.Factorias;

namespace GestorDeFlotasDesktop.MejoresChoferes
{
    public partial class MejoresChoferes : BaseForm
    {
        public MejoresChoferes()
        {
            InitializeComponent();
        }

        protected override void OnVisibleChanged(EventArgs e)
        {
            try
            {
                base.OnVisibleChanged(e);
                this.CargarCombos();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void CargarCombos()
        {
            cmbAño.Items.Add("Seleccione un año");
            for (int i = 2005; i <= DateTime.Now.Year; i++)
                cmbAño.Items.Add(i);

            cmbTrimestre.Items.Add("Seleccione un trimestre");
            cmbTrimestre.Items.Add("1° Trimestre");
            cmbTrimestre.Items.Add("2° Trimestre");
            cmbTrimestre.Items.Add("3° Trimestre");
            cmbTrimestre.Items.Add("4° Trimestre");
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            try
            {
                if (String.IsNullOrEmpty(this.txtDesde.Text) || String.IsNullOrEmpty(this.txtHasta.Text))
                {
                    MessageBox.Show("Debe seleccionar trimestre y año para poder consultar el listado.");
                    return;
                }

                this.CargarChoferes();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void CargarChoferes()
        {
            List<Chofer> autos = Transaccion.Factoria<FactoriaChofer>().MejorChofer(txtDesde.Text, txtHasta.Text);
            lblNoItems.Visible = false;
            if (autos.Count > 0)
                SetGridData(autos);
            else
                lblNoItems.Visible = true;
        }

        private void GridCreation()
        {
            dglistado.Columns.Clear();
            dglistado.AutoGenerateColumns = false;
            dglistado.ReadOnly = true;
            dglistado.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dglistado.MultiSelect = false;
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Apellido", "Apellido"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Nombre", "Nombre"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("FechaNacimiento", "Fecha de Nacimiento"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Dni", "Dni"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewTextBoxColumn("Telefono", "Telefono"));
            dglistado.Columns.Add(DataGridViewHelpers.CreateDataGridViewCheckBoxColumn("Recaudacion", "Recaudacion"));
        }
        private void SetGridData(List<Chofer> choferes)
        {
            if (choferes != null && choferes.Count > 0)
            {
                dglistado.DataSource = choferes.ConvertAll<ChoferProxy>(delegate(Chofer a) { return new ChoferProxy(a); });
                dglistado.Visible = true;
                //lblNoItems.Visible = false;

            }
            else
            {
                //lblNoItems.Visible = true;
                dglistado.Visible = false;
            }
        }

        private void cmbAño_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.SetearFecha();
        }

        private void SetearFecha()
        {
            try
            {
                if (cmbTrimestre.SelectedIndex == 0 || cmbAño.SelectedIndex == 0)
                    return;

                switch (cmbTrimestre.SelectedIndex)
                {
                    case 1:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 1, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 3, 31).ToShortDateString();
                        break;
                    case 2:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 4, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 6, 30).ToShortDateString();
                        break;
                    case 3:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 7, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 9, 30).ToShortDateString();
                        break;
                    case 4:
                        this.txtDesde.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 10, 1).ToShortDateString();
                        this.txtHasta.Text = new DateTime(int.Parse(cmbAño.SelectedItem.ToString()), 12, 31).ToShortDateString();
                        break;

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void cmbTrimestre_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.SetearFecha();

        }

        private void MejoresChoferes_Load(object sender, EventArgs e)
        {

        }
    }
}
